DocumentDB (এবং MongoDB) এর মধ্যে Aggregation এবং Query কৌশল দুটি ডেটা অনুসন্ধান এবং বিশ্লেষণ করার অত্যন্ত শক্তিশালী মাধ্যম। এই কৌশলগুলি আপনাকে ডেটাবেসে সঞ্চিত ডেটা থেকে জটিল তথ্য বের করতে এবং আরও দক্ষভাবে পারফরম্যান্স উন্নত করতে সহায়তা করে।
Query হল ডেটাবেসে ডেটা খোঁজার এবং ফিল্টার করার একটি উপায়। DocumentDB বা MongoDB তে আপনি JSON ডকুমেন্টের ভিত্তিতে অনুসন্ধান করতে পারেন।
সাধারণ কুয়েরি ব্যবহার করে আপনি নির্দিষ্ট ডকুমেন্ট বা ডেটার অংশ খুঁজে পেতে পারেন।
উদাহরণ:
db.users.find({ "age": { "$gte": 18 } })
এটি users
কালেকশন থেকে সমস্ত ব্যবহারকারীদের খুঁজে বের করবে যাদের বয়স ১৮ বা তার বেশি।
Projection কুয়েরি ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডগুলো ফেরত পেতে পারেন, যাতে কেবলমাত্র প্রয়োজনীয় তথ্য রিটার্ন হয়।
উদাহরণ:
db.users.find({ "age": { "$gte": 18 } }, { "name": 1, "age": 1 })
এটি name
এবং age
কেবল ফিরিয়ে দেবে, অন্য কোন তথ্য ছাড়া।
ফিল্টারিং কুয়েরি ডেটাকে নির্দিষ্ট শর্তের উপর ভিত্তি করে ফিল্টার করে।
উদাহরণ:
db.orders.find({ "status": "shipped", "amount": { "$gt": 100 } })
এটি কেবল সেই অর্ডারগুলো ফিরিয়ে দিবে যেগুলির স্ট্যাটাস "shipped" এবং যাদের পরিমাণ ১০০ এর বেশি।
Sorting কুয়েরি ব্যবহার করে আপনি রিটার্ন হওয়া ডেটা সাজাতে পারেন।
উদাহরণ:
db.users.find().sort({ "age": -1 })
এটি ব্যবহারকারীদের বয়সের ভিত্তিতে ডিসেনডিং (বাড়ানোর) ক্রমে সাজাবে। (যদি 1
দেওয়া হয়, তাহলে Ascending হয়)
আপনি কতগুলো ডেটা ফিরিয়ে দেবেন এবং কোথা থেকে শুরু করবেন, তা কন্ট্রোল করতে limit
এবং skip
কুয়েরি ব্যবহার করতে পারেন।
উদাহরণ:
db.orders.find().skip(10).limit(5)
এটি প্রথম ১০টি ডকুমেন্ট স্কিপ করবে এবং পরবর্তী ৫টি রিটার্ন করবে।
Aggregation হল একটি শক্তিশালী কৌশল যা এক বা একাধিক ডকুমেন্টের উপর বিভিন্ন অপারেশন পরিচালনা করে, যেমন গণনা, গোষ্ঠীভুক্তকরণ, পরিসংখ্যান সংগ্রহ, ইত্যাদি। DocumentDB বা MongoDB-তে আপনি Aggregation Pipeline ব্যবহার করতে পারেন যা বিভিন্ন স্টেপের মাধ্যমে ডেটা প্রক্রিয়া করে।
Aggregation Pipeline হল ডেটা প্রক্রিয়াকরণের একটি ধাপে ধাপে পদ্ধতি যেখানে একাধিক স্টেপ থাকে। প্রতিটি স্টেপে ডেটা একটি নির্দিষ্ট প্রক্রিয়া অনুসরণ করে।
উদাহরণ:
db.sales.aggregate([
{ "$match": { "category": "electronics" } },
{ "$group": { "_id": "$brand", "total_sales": { "$sum": "$amount" } } },
{ "$sort": { "total_sales": -1 } }
])
এটি প্রথমে electronics
ক্যাটাগরির বিক্রয়গুলো নির্বাচন করবে, তারপর brand
অনুযায়ী বিক্রয় মোট যোগ করবে এবং পরিশেষে সর্বোচ্চ বিক্রয় ব্র্যান্ডগুলো সাজাবে।
$match
স্টেপ ডেটাকে একটি নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টার করে। এটি find() কুয়েরির মতো কাজ করে।
উদাহরণ:
db.orders.aggregate([
{ "$match": { "status": "completed" } }
])
এটি completed
স্ট্যাটাসের অর্ডারগুলিকে ফিল্টার করবে।
$group
স্টেপটি ডেটাকে নির্দিষ্ট একটি ফিল্ডের উপর ভিত্তি করে গ্রুপ করতে ব্যবহৃত হয় এবং কিছু সংক্ষিপ্ত পরিসংখ্যান তৈরি করতে সহায়ক।
উদাহরণ:
db.sales.aggregate([
{ "$group": { "_id": "$category", "total_sales": { "$sum": "$amount" } } }
])
এটি প্রতিটি category
অনুযায়ী মোট বিক্রয় পরিমাণ যোগ করবে।
$sort
স্টেপ ব্যবহার করে ডেটাকে নির্দিষ্ট একটি ফিল্ডের ভিত্তিতে সাজানো হয়।
উদাহরণ:
db.orders.aggregate([
{ "$sort": { "order_date": -1 } }
])
এটি অর্ডারগুলিকে সর্বশেষ অর্ডারের ভিত্তিতে সাজাবে।
$project
স্টেপটি ডেটার আউটপুটের ফিল্ড কন্ট্রোল করতে ব্যবহৃত হয়, অর্থাৎ আপনি কোন ফিল্ডগুলো রিটার্ন করবেন তা নির্ধারণ করতে পারবেন।
উদাহরণ:
db.users.aggregate([
{ "$project": { "name": 1, "age": 1 } }
])
এটি কেবল name
এবং age
ফিল্ড রিটার্ন করবে।
$limit
স্টেপটি নির্দিষ্ট সংখ্যক ডকুমেন্ট ফেরত আনে।
উদাহরণ:
db.users.aggregate([
{ "$limit": 5 }
])
এটি কেবল প্রথম ৫টি ডকুমেন্ট রিটার্ন করবে।
$unwind
স্টেপটি একটি অ্যারে ফিল্ডের প্রতিটি উপাদান আলাদাভাবে এক্সট্র্যাক্ট করে।
উদাহরণ:
db.orders.aggregate([
{ "$unwind": "$items" }
])
এটি items
অ্যারে ফিল্ডের প্রতিটি আইটেমকে আলাদা আলাদা ডকুমেন্ট হিসেবে দেখাবে।
DocumentDB (এবং MongoDB) এর Query এবং Aggregation কৌশলগুলি ডেটাবেস থেকে তথ্য অনুসন্ধান ও বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। যেখানে Query কৌশলগুলি সরল অনুসন্ধান এবং ফিল্টারিং এর জন্য ব্যবহৃত হয়, Aggregation কৌশলগুলি ডেটার উপর জটিল গাণিতিক এবং পরিসংখ্যানিক অপারেশন পরিচালনা করতে ব্যবহৃত হয়। এই কৌশলগুলির সাহায্যে আপনি ডেটা পরিচালনা, বিশ্লেষণ এবং অপটিমাইজ করতে পারবেন।